Micron Document
`:top
`!Component-based software engineering`! (`!CBSE`!), also called `!component-based development`! (`!CBD`!), is a style of `F33f`_`[software engineering`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_engineering]`_`f that aims to construct a `F33f`_`[software system`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_system]`_`f from `F33f`_`[components`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_component]`_`f that are loosely-`F33f`_`[coupled`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Coupling_(computer_programming)]`_`f and `F33f`_`[reusable`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Reusability]`_`f. This emphasizes the `F33f`_`[separation of concerns`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Separation_of_concerns]`_`f among components.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f]

To find the right level of component granularity, software architects have to continuously iterate their component designs with developers. Architects need to take into account user requirements, responsibilities and architectural characteristics.`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f]

>>Contents

• `F0af`_`[Considerations`#considerations]`_`f
• `F0af`_`[References`#references]`_`f

-─

>>Considerations

For large-scale systems developed by large teams, a disciplined culture and process is required to achieve the benefits of CBSE.`:cite-ref-4[`F5bf`_`[4`#cite-note-4]`_`f] `F33f`_`[Third-party components`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Third-party_software_component]`_`f are often utilized in large systems.

The system can be designed visually with the `F33f`_`[Unified Modeling Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Unified_Modeling_Language]`_`f (UML). Each `F33f`_`[component`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_component]`_`f is shown as a rectangle, and an interface is shown as a lollipop to indicate a provided interface and as a socket to indicate consumption of an interface.

`F33f`_`[Component-based usability testing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Component-based_usability_testing]`_`f is for components that interact with the `F33f`_`[end user`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=End_user]`_`f.

>>References

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f George T. Heineman, William T. Councill (2001). `*Component-Based Software Engineering: Putting the Pieces Together`*. Addison-Wesley Professional, Reading 2001 `F33f`_`[ISBN`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ISBN_(identifier)]`_`f 0-201-70485-4
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f Clemens Szyperski, Dominik Gruntz, Stephan Murer (2002). `*Component Software: Beyond Object-Oriented Programming`*. 2nd ed. ACM Press - Pearson Educational, London 2002 `F33f`_`[ISBN`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ISBN_(identifier)]`_`f 0-201-74572-0
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f `*Fundamentals of Software Architecture: An Engineering Approach`*. O'Reilly Media. 2020. `F33f`_`[ISBN`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ISBN_(identifier)]`_`f 978-1492043454.
`:cite-note-4`!4.`! `F0af`_`[↑`#cite-ref-4]`_`f `:citerefdouglas-c-schmidt`a`F33f`_`[Douglas C. Schmidt`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Douglas_C._Schmidt]`_`f. "Why Software Reuse has Failed and How to Make It Work for You". Retrieved 14 May 2024.

`c`F0af`_`[↑ Back to top`#top]`_`f`a